// 购物车处理函数

// 导入购物车数据库模型
const { CartModel,ListModel } = require('../db/model')

// 1.购物车添加商品
const add = async (req, res) => {
    // 得到用户ID
    const usersID = req.session.info.id
   
  //  console.log(usersID)
//    得到添加该商品的ID
const goodsID = req.body.goodsID
// console.log(goodsID)

const cartResult = await CartModel.find({goodsID})
// console.log(cartResult)
// console.log(cartResult[0].cart_number)

//   通过该商品ID在list里查找符合要求的id
if(cartResult[0]) {
  // 如果购物车列表已经存在该商品，那么再次点击添加购物车让其数量+1
    cart_number = cartResult[0].cart_number + 1
    // console.log(cart_number)

    await CartModel.findByIdAndUpdate(cartResult[0]._id, { cart_number })
   
    res.send({
        code: 2,
        message: '添加物品数量加一'
      })
}   
if(!cartResult[0]){
const goodsResult = await ListModel.findById(goodsID)

// console.log(goodsResult)
// // 把数据存到购物车列表里
const result = await CartModel({ usersID, goodsID, img:goodsResult.img, price:goodsResult.price, title:goodsResult.title }).save()

if (result) 
    res.send({
      code: 1,
      message: '添加购物车成功'
    })
} 
  }
// 2.购物车全选逻辑
const select_all = async (req,res) => {
  // 拿到用户的id
  const usersID = req.session.info.id
  const {type} = req.body
  // console.log(type)
  await CartModel.updateMany({usersID}, { is_select:type })
  // 找到所有的商品
  // const select_allResult = await CartModel.find({usersID})
  // // console.log(select_allResult)
  
  
 
  res.send({  code: 1, message: '购物车全选走通了'})
}
// 3.购物车分开选中事件（还未完）
const select = async (req,res) => {
  
  const { goodsID, type } = req.body
  // 找到所有的商品
//  console.log(goodsID)

//   console.log(result)
   // 修改数据选中为true
  await CartModel.updateMany({goodsID}, { is_select:type })
  //  const result = await CartModel.find({goodsID})
  //  console.log(result)
  res.send({  code: 1, message: '购物车单选走通了'})
}
// 4.删除一种商品
const deleteone = async (req,res) => {
//  // 得到用户ID
//  const usersID = req.session.info.id
 const goodsID = req.body.goodsID

await CartModel.deleteOne({goodsID})
  res.send({
    code: 1,
    message: '删除一件物品成功'
  })

}
//5.减少一件商品 
const itemsub = async (req,res) => {
  //    得到添加该商品的ID
let count = 1
const goodsID = req.body.goodsID
// console.log(goodsID)
const cartResult = await CartModel.find({goodsID})
// console.log(cartResult)
if(cartResult[0].cart_number <= 1){
  return count = 1
}
count = cartResult[0].cart_number - 1

// console.log(count)
await CartModel.updateOne({ goodsID }, { cart_number:count })
res.send({
  code: 1,
  message: '减少一件物品数量成功'
})
}
// 6.增加一件商品
 
const itemadd = async (req,res) => {
  //    得到添加该商品的ID
let count = 0
const goodsID = req.body.goodsID
console.log(goodsID)
const cartResult = await CartModel.find({goodsID})
console.log(cartResult)
count = cartResult[0].cart_number + 1

console.log(count)
await CartModel.updateOne({ goodsID }, { cart_number:count })
res.send({
  code: 1,
  message: '增加一件物品数量成功'
})
}

// 7.清空购物车事件
const clear = async (req,res) => {
  // 得到用户ID
  const usersID = req.session.info.id
  //  console.log(usersID)
  //    得到添加该商品的ID
  await CartModel.deleteMany({ usersID })

  res.send({
    code: 1,
    message: '清空购物车成功'
    })
}

// 8.删除所有已选中
const remove = async (req,res) => {
   // 得到用户ID
   const usersID = req.session.info.id
   
   
  await CartModel.deleteMany({is_select:true})
  // const cartResult = await CartModel.find({usersID})
  // console.log(cartResult)
  
  res.send({
    code: 1,
    message: '删除所有已选中成功'
    })
}
  module.exports = {
   add,
   select_all,
   select,
   deleteone,
   itemsub,
   itemadd,
   clear,
   remove
  }  